#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <array>
using namespace std;

//template<class T, size_t N>
//class Stack
//{
//private:
//	T _a[N];
//};
//
//int main()
//{
//	Stack<int, 10> s1;
//	Stack<int, 100000> s2;
//	array<int, 10> arr;
//	int a[10];
//
//	a[15] = 1;
//	arr[15] = 1;
//}

template<class T1, class T2>
class Data
{
public:
	Data() { cout << "Data<T1, T2>" << endl; }
private:
	T1 _d1;
	T2 _d2;
};

template<>
class Data<int, char>
{
public:
	Data() { cout << "Data<int, char>" << endl; }
private:
	int _d1;
	char _d2;
};

template<class T1>
class Data<T1, char>
{
public:
	Data() { cout << "Data<T1, char>" << endl; }
private:
	int _d1;
	char _d2;
};
template<class T1, class T2>
class Data<T1*, T2*>
{
public:
	Data() { cout << "Data<T*, T2*>" << endl; }
private:
	int _d1;
	char _d2;
};
int main()
{
	Data<int, int> d1;
	Data<int, char> d2;
	return 0;
}